// import com.alibaba.druid.sql.parser.*;

// import java.util.HashMap;
// import java.util.Map;

// import static com.alibaba.druid.sql.parser.LayoutCharacters.EOI;
// import static com.alibaba.druid.sql.parser.Token.IDENTIFIER;
#pragma once
#include "../../../parser/Lexer.h"
#include <unordered_map>

class SQLServerLexer : virtual public Lexer
{
public:
  static BOOL_ptr __init;
  static BOOL_ptr init();
  static std::shared_ptr<std::unordered_map<std::string, Token_ptr>> map_;
  static Keywords_ptr DEFAULT_SQL_SERVER_KEYWORDS;

  SQLServerLexer(char *input, int inputLength, BOOL_ptr skipComment);

  SQLServerLexer(string_ptr input);

  SQLServerLexer(string_ptr input, SQLParserFeature_list_ptr features);

  void scanComment();

  void scanLBracket();
};
